package fr.thelem.gestiondemandesthelem.web.actions;

import java.util.ArrayList;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import fr.thelem.gestiondemandesthelem.dao.model.AdministrateurEntity;
import fr.thelem.gestiondemandesthelem.service.IAppliService;

public class ContacterAdminAction extends BaseAction {

	private static final long serialVersionUID = 1L;
	
	   private String from ="";
	   private String password ="";
	   private String to="";
	   private String subject="";
	   private String body="";
	//   private String[] toEmails; // une seule adresse

	   private IAppliService appliService;


	   static Properties properties = new Properties();
	   static
	   {
	      properties.put("mail.smtp.host", "smtp.gmail.com"); 
	     // properties.put("mail.smtp.host", "smtp.thelem-assurances.fr");
	      properties.put("mail.smtp.socketFactory.port", "465");
	      properties.put("mail.smtp.socketFactory.class",
	                     "javax.net.ssl.SSLSocketFactory");
	      properties.put("mail.smtp.auth", "true");
	      properties.put("mail.smtp.port", "465");
	   }

	   public String execute() throws Exception {
		   String ret = SUCCESS;
		      try
		      {
		         Session session = Session.getDefaultInstance(properties,  
		            new javax.mail.Authenticator() {
		            protected PasswordAuthentication getPasswordAuthentication() {
		            	return new PasswordAuthentication(from, password);
		            	}
		            }
		         );

		         Message message = new MimeMessage(session);
		         message.setFrom(new InternetAddress(from));
		         message.setRecipients(Message.RecipientType.TO, 
		            InternetAddress.parse(to));
		         message.setSubject(subject);
		         message.setText(body);
		         Transport.send(message);
		      }
		      catch(Exception e)
		      {
		         ret = ERROR;
		         e.printStackTrace();
		      }
		      return ret;
		   }
		   
	   
	   public String getFrom() {
		return from;
	}
	public void setFrom(String from) {
		this.from = from;
	}
	public String getTo() {
		return to;
	}
	public void setTo(String to) {
		this.to = to;
	}
	public String getSubject() {
		return subject;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	public String getBody() {
		return body;
	}
	public void setBody(String body) {
		this.body = body;
	}
	public static Properties getProperties() {
		return properties;
	}
	public static void setProperties(Properties properties) {
		ContacterAdminAction.properties = properties;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
	/*
	@SuppressWarnings("null")
	public void recupererTousAdmins() {
		ArrayList<AdministrateurEntity> listeAdmins = (ArrayList<AdministrateurEntity>) this.appliService.recupererAdministrateurs();
		String[] auxLesAdmins = new String[listeAdmins.size()]; // initialise la taille du tableau
		this.setToEmails(new String[listeAdmins.size()]); // initialise la taille du tableau
		
        for (int x=0; x < listeAdmins.size(); x++) {
        	auxLesAdmins[x] = listeAdmins.get(x).getAdresseMail();
        }
        
        setToEmails(auxLesAdmins);
	}


	public String[] getToEmails() {
		return toEmails;
	}


	public void setToEmails(String[] toEmails) {
		this.toEmails = toEmails;
	}

*/
	public IAppliService getAppliService() {
		return appliService;
	}


	public void setAppliService(IAppliService appliService) {
		this.appliService = appliService;
	}
	
	
	   
}
